package paginator.helpers
{
	public dynamic class ArrayUtils
	{
		public function ArrayUtils()
		{
		}
		
		/**
		 * Sprawdza czy tablica zwiera jakies elementy
		 * 
		 * @param Array|ArrayCollection arr Tablica
		 * */
		public static function isEmpty(arr:*):Boolean
		{
			if (arr == null)
			{
				return true;
			}
			
			var counter:int = 0;
			var item:Object = null;
			
			if (arr.length == 0)
			{
				for each (item in arr)
				{
					return false;
				}
				
				return true;
			}
			
			return false;
		}
		
		/**
		 * Tworzy plaska tablice
		 * Jezeli obiekty wewnatrz tablicy zawieraja zmienna children
		 * Rekurncyjnie przechodzi po wszystkich elementach
		 * 
		 * @param Array arr Tablica z elementami
		 * @param Array outArr Tablica wynikowa splaszczona
		 * */
		public static function flatArray(arr:Array, outArr:Array):Array
		{
			for each (var item:Object in arr)
			{
				outArr.push(item);
				flatArray(item.children, outArr);
			}
			
			return outArr;
		}
		
		/**
		 * Funkcja zwraca ilosc elementow w tablicy bez testowania 
		 * czy tablica istnieje
		 * 
		 * @param Array arr Tablica 
		 * @return int 
		 */		
		public static function getCount(arr:Array):int
		{
			if (isEmpty(arr))
			{
				return 0;
			}
			else
			{
				var counter:int = 0;
				var item:Object = null;
				if (!arr.length)
				{
					for each (item in arr)
					{
						counter++;
					}
					arr.length = counter;
				}
				
				return arr.length;
			}
		}
	}
}